package cn.chinaunicom.mini.program.dingtalk.events.listener;

import cn.chinaunicom.mini.program.dingtalk.events.event.org.*;

/**
 * @ProjectName: dingtalk-adapter
 * @Package: cn.chinaunicom.mini.program.dingtalk.events.listener
 * @ClassName: OrgEventListener
 * @Description: 通讯录类事件监听器
 * @Author: wangjc
 * @CreateDate: 2024/6/11
 * @UpdateUser: wangjc
 * @UpdateDate: 2024/6/11
 * @UpdateRemark: 更新内容
 * @Version: 1.0
 */
public interface OrgEventListener {
    /**
     * 处理部门新增事件。
     * 当部门被新增时，此方法将被调用以执行相关的业务逻辑。
     * @param event 包含部门新增信息的事件对象。
     */
    void handleDeptAddEvent(DeptAddEvent event);

    /**
     * 处理部门删除事件。
     * 当部门被删除时，此方法将被调用以执行相关的业务逻辑。
     * @param event 包含部门删除信息的事件对象。
     */
    void handleDeptDeleteEvent(DeptDeleteEvent event);

    /**
     * 处理部门更新事件。
     * 当部门信息被更新时，此方法将被调用以执行相关的业务逻辑。
     * @param event 包含部门更新信息的事件对象。
     */
    void handleDeptUpdateEvent(DeptUpdateEvent event);

    /**
     * 处理用户新增事件。
     * 当用户被新增时，此方法将被调用以执行相关的业务逻辑。
     * @param event 包含用户新增信息的事件对象。
     */
    void handleUserAddEvent(UserAddEvent event);

    /**
     * 处理用户更新事件。
     * 当用户信息被更新时，此方法将被调用以执行相关的业务逻辑。
     * @param event 包含用户更新信息的事件对象。
     */
    void handleUserUpdateEvent(UserUpdateEvent event);

    /**
     * 处理用户删除事件。
     * 当用户被删除时，此方法将被调用以执行相关的业务逻辑。
     * @param event 包含用户删除信息的事件对象。
     */
    void handleUserDeleteEvent(UserDeleteEvent event);

    /**
     * 处理角色新增事件。
     * 当角色被新增时，此方法将被调用以执行相关的业务逻辑。
     * @param event 包含角色新增信息的事件对象。
     */
    void handleRoleAddEvent(RoleAddEvent event);

    /**
     * 处理角色更新事件。
     * 当角色信息被更新时，此方法将被调用以执行相关的业务逻辑。
     * @param event 包含角色更新信息的事件对象。
     */
    void handleRoleUpdateEvent(RoleUpdateEvent event);

    /**
     * 处理角色删除事件。
     * 当角色被删除时，此方法将被调用以执行相关的业务逻辑。
     * @param event 包含角色删除信息的事件对象。
     */
    void handleRoleDeleteEvent(RoleDeleteEvent event);

    /**
     *  处理用户部门变更事件
     * @param event
     */
    void handleUserDeptChangeEvent(UserDeptChangeEvent event);

    /**
     *  处理用户角色变更事件
     * @param event
     */
    void handleUserRoleChangeEvent(UserRoleChangeEvent event);

    /**
     *  处理企业变更事件
     * @param event
     */
    void handleOrgUpdateEvent(OrgUpdateEvent event);

    /**
     *  处理企业删除事件
     * @param event
     */
    void handleOrgRemoveEvent(OrgRemoveEvent event);
}
